iT邦幫忙

2024 iThome 鐵人賽

DAY 14
0

今天我們要來介紹怎麼用 Cursor 來做註冊頁面。但在實作之前需要知道一下一些軟體。

Postman

Postman 是一個非常強大的 API 測試工具,可以幫助你模擬發送 HTTP 請求來測試你的 API。這次我們會利用 Postman 來測試 Nest.js 的註冊 API,並檢查回應是否正確(例如:檢查生成的 PDF 檔案)。

步驟 1: 下載和安裝 Postman

步驟 2: 發送註冊 API 請求

  1. 打開 Postman,點擊 "New",選擇 "HTTP Request"

  2. 在 URL 欄位輸入 API 的路徑,例如:
    POST http://localhost:3000/register

  3. 切換到 Body,選擇 rawJSON,並填入以下內容作為註冊用戶的資料:

{
  "username": "your_username",
  "email": "your_email@example.com",
  "password": "your_password",
  "account": "your_account"
}

  1. 點擊 Send,這樣就可以發送請求並查看伺服器的回應了。

Nest.js 註冊 API 範例

這是一個簡單的 Nest.js 註冊 API,使用者可以通過這個 API 提交註冊資訊,然後將數據儲存在 MongoDB 資料庫中。

### 1. user.schema.ts - 定義用戶模型

在這部分,我們使用 Mongoose 來定義數據結構(也就是「模型」),該模型描述了數據應該如何在 MongoDB 中儲存。在這個例子中,我們定義了一個 UserSchema,它包含三個欄位:usernamepasswordemail

user.schema.ts

import { Schema } from 'mongoose';

export const UserSchema = new Schema({
  username: String,   // 用戶名
  password: String,   // 密碼
  email: String,      // 郵箱
});

這段代碼定義了一個 User 模型,這個模型對應 MongoDB 中的集合(collection)。每個用戶都會有三個屬性:usernamepasswordemail。當我們將用戶資料儲存進 MongoDB 時,這些資料會自動符合這個結構。

2. users.service.ts - 用戶服務

UsersService 是一個提供者(Provider),它負責處理所有與用戶相關的業務邏輯。在這裡,UsersService 包含一個 create() 方法,用來創建一個新的用戶並將其儲存到 MongoDB 中。

users.service.ts

import { Injectable } from '@nestjs/common';
import { InjectModel } from '@nestjs/mongoose';
import { Model } from 'mongoose';
import { User } from './interfaces/user.interface';

@Injectable()
export class UsersService {
  constructor(@InjectModel('User') private userModel: Model<User>) {}

  // 創建新用戶
  async create(userData: any): Promise<User> {
    const createdUser = new this.userModel(userData); // 創建一個新的用戶實例
    return createdUser.save();  // 儲存到 MongoDB 中
  }
}

在這裡,@InjectModel('User') 用來將我們之前定義的 User 模型 注入到服務中,這樣我們可以操作 MongoDB 的用戶資料。create() 方法負責接收傳入的用戶資料,然後將其儲存到資料庫中。

3. users.controller.ts - 用戶控制器

控制器(Controller)負責處理進入的 HTTP 請求,並返回對應的響應。在這裡,UsersController 有一個 POST 路由 /register,用來處理用戶的註冊請求。

users.controller.ts

import { Controller, Post, Body } from '@nestjs/common';
import { UsersService } from './users.service';

@Controller('register')
export class UsersController {
  constructor(private readonly usersService: UsersService) {}

  @Post()
  async register(@Body() userData: any) {
    // 調用 UsersService 的 create 方法,將用戶資料儲存到資料庫中
    return this.usersService.create(userData);
  }
}

這段代碼中,我們定義了一個 POST 路由 /register,當接收到 HTTP POST 請求時,它會調用 UsersServicecreate() 方法來創建新用戶。這個請求會接受用戶的 usernamepasswordemail 作為請求體(@Body()),並將其傳給服務層進行處理。

4. users.module.ts - 用戶模組

UsersModule 是用來組織和管理相關控制器和服務的模組。Nest.js 使用模組來管理應用程式的結構,讓每個功能區域(例如用戶管理)都能保持獨立並易於維護。

users.module.ts

import { Module } from '@nestjs/common';
import { MongooseModule } from '@nestjs/mongoose';
import { UsersController } from './users.controller';
import { UsersService } from './users.service';
import { UserSchema } from './schemas/user.schema';

@Module({
  imports: [MongooseModule.forFeature([{ name: 'User', schema: UserSchema }])], 
  controllers: [UsersController],
  providers: [UsersService],
})
export class UsersModule {}

這裡的 UsersModuleUser 模型UserSchema)註冊到 Mongoose 中,然後將 UsersControllerUsersService 注入到這個模組中。這樣一來,我們的應用程式就能夠處理與用戶相關的請求和業務邏輯。

測試 API

使用 Postman 發送 POST 請求來測試註冊 API:

POST http://localhost:3000/register

Body 中可以提供以下 JSON 格式的數據:

{

	"username": "your_username",
	"email": "your_email@example.com",
	"password": "your_password",
	"account": "your_account"
}

接著可以看到結果。

P.S. 我會再回來修改這篇,今天朋友來家裡烤肉有點忙QQ


上一篇
[Day13] API開始之前的 Setup:Docker 與 MongoDB 的安裝
下一篇
[Day15] 讓APP動起來:串接註冊API
系列文
30天 使用chatGPT輔助學習APP完成接案任務委託30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言